home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earcd / phase5 / ppcrelease / autodocs / ppc.doc < prev   
Text File  |  1998-02-21  |  69KB  |  2,394 lines

  1. TABLE OF CONTENTS
  2.  
  3. exec.library/RawDoFmt
  4. PowerUPKernel/PPCGetAttrs
  5. ppc.library/PPCAddPortList
  6. ppc.library/PPCAllocMem
  7. ppc.library/PPCAllocVec
  8. ppc.library/PPCAllocVecPooled
  9. ppc.library/PPCCacheClearE
  10. ppc.library/PPCCacheInvalidE
  11. ppc.library/PPCCacheTrashE
  12. ppc.library/PPCCreateMessage
  13. ppc.library/PPCCreatePool
  14. ppc.library/PPCCreatePort
  15. ppc.library/PPCCreatePortList
  16. ppc.library/PPCCreateTask
  17. ppc.library/PPCDeleteMessage
  18. ppc.library/PPCDeletePool
  19. ppc.library/PPCDeletePort
  20. ppc.library/PPCDeletePortList
  21. ppc.library/PPCDeleteTask
  22. ppc.library/PPCFindTask
  23. ppc.library/PPCFindTaskObject
  24. ppc.library/PPCFreeMem
  25. ppc.library/PPCFreeVec
  26. ppc.library/PPCFreeVecPooled
  27. ppc.library/PPCGetAttrs
  28. ppc.library/PPCGetMessage
  29. ppc.library/PPCGetMessageAttr
  30. ppc.library/PPCGetObjectAttrs
  31. ppc.library/PPCGetPortListAttr
  32. ppc.library/PPCGetTaskAttrs
  33. ppc.library/PPCLoadObject
  34. ppc.library/PPCLoadObjectTagList
  35. ppc.library/PPCObtainPort
  36. ppc.library/PPCReadByte
  37. ppc.library/PPCReadLong
  38. ppc.library/PPCReadWord
  39. ppc.library/PPCReleasePort
  40. ppc.library/PPCRemPortList
  41. ppc.library/PPCReplyMessage
  42. ppc.library/PPCRunObject
  43. ppc.library/PPCSendMessage
  44. ppc.library/PPCSetAttrs
  45. ppc.library/PPCFreeVecPooled
  46. ppc.library/PPCAllocVecPooled
  47. ppc.library/PPCCreateMessage
  48. ppc.library/PPCCreatePort
  49. ppc.library/PPCDeleteMessage
  50. ppc.library/PPCDeletePort
  51. ppc.library/PPCGetMessageAttr
  52. ppc.library/PPCObtainPort
  53. ppc.library/PPCReleasePort
  54. ppc.library/PPCReplyMessage
  55. ppc.library/PPCSendMessage
  56. ppc.library/PPCSetPortListAttr
  57. ppc.library/PPCSetTaskAttrs
  58. ppc.library/PPCSignalTask
  59. ppc.library/PPCStartTask
  60. ppc.library/PPCStopTask
  61. ppc.library/PPCUnLoadObject
  62. ppc.library/PPCWaitPort
  63. ppc.library/PPCWaitPort
  64. ppc.library/PPCWaitPortList
  65. ppc.library/PPCWriteByte
  66. ppc.library/PPCWriteLong
  67. ppc.library/PPCWriteLongFlush
  68. ppc.library/PPCWriteWord
  69. exec.library/RawDoFmt                                   exec.library/RawDoFmt
  70.  
  71.    NAME
  72.     RawDoFmt -- format data into a character stream.
  73.  
  74.    SYNOPSIS
  75.     NextData = RawDoFmt(FormatString, DataStream, PutChProc, PutChData);
  76.        d0                  a0            a1          a2         a3
  77.  
  78.     APTR RawDoFmt(STRPTR,APTR,void (*)(),APTR);
  79.  
  80.    FUNCTION
  81.     perform "C"-language-like formatting of a data stream, outputting
  82.     the result a character at a time.  Where % formatting commands are
  83.     found in the FormatString, they will be replaced with the
  84.     corresponding element in the DataStream.  %% must be used in the
  85.     string if a % is desired in the output.
  86.  
  87.     Under V36, RawDoFmt() returns a pointer to the end of the DataStream
  88.     (The next argument that would have been processed).  This allows
  89.     multiple formatting passes to be made using the same data.
  90.  
  91.    INPUTS
  92.     FormatString - a "C"-language-like NULL terminated format string,
  93.     with the following supported % options:
  94.  
  95.      %[flags][width.limit][length]type
  96.  
  97.     flags  - only one allowed. '-' specifies left justification.
  98.     width  - field width.  If the first character is a '0', the
  99.          field will be padded with leading 0's.
  100.       .    - must follow the field width, if specified
  101.     limit  - maximum number of characters to output from a string.
  102.          (only valid for %s).
  103.     length - size of input data defaults to WORD for types d, x,
  104.          and c, 'l' changes this to long (32-bit).
  105.     type   - supported types are:
  106.             b - BSTR, data is 32-bit BPTR to byte count followed
  107.                 by a byte string, or NULL terminated byte string.
  108.                 A NULL BPTR is treated as an empty string.
  109.                 (Added in V36 exec)
  110.             d - decimal
  111.             u - unsigned decimal (Added in V37 exec)
  112.             x - hexadecimal
  113.             s - string, a 32-bit pointer to a NULL terminated
  114.                 byte string.  In V36, a NULL pointer is treated
  115.                 as an empty string
  116.             c - character
  117.  
  118.     DataStream - a stream of data that is interpreted according to
  119.          the format string.  Often this is a pointer into
  120.          the task's stack.
  121.     PutChProc  - the procedure to call with each character to be
  122.          output, called as:
  123.  
  124.     PutChProc(Char,  PutChData);
  125.           D0-0:8 A3
  126.  
  127.         the procedure is called with a NULL Char at the end of
  128.         the format string.
  129.  
  130.         IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT!
  131.  
  132.         If PutChProc is == 0 it writes the character into the Buffer.
  133.         If PutChProc is == 1 it writes the character to the serial line.
  134.  
  135.  
  136.     PutChData - a value that is passed through to the PutChProc
  137.         procedure.  This is untouched by RawDoFmt, and may be
  138.         modified by the PutChProc.
  139.  
  140.    EXAMPLE
  141.     ;
  142.     ; Simple version of the C "sprintf" function.  Assumes C-style
  143.     ; stack-based function conventions.
  144.     ;
  145.     ;   long eyecount;
  146.     ;   eyecount=2;
  147.     ;   sprintf(string,"%s have %ld eyes.","Fish",eyecount);
  148.     ;
  149.     ; would produce "Fish have 2 eyes." in the string buffer.
  150.     ;
  151.         XDEF _sprintf
  152.         XREF _AbsExecBase
  153.         XREF _LVORawDoFmt
  154.     _sprintf:    ; ( ostring, format, {values} )
  155.         movem.l a2/a3/a6,-(sp)
  156.  
  157.         move.l    4*4(sp),a3       ;Get the output string pointer
  158.         move.l    5*4(sp),a0       ;Get the FormatString pointer
  159.         lea.l    6*4(sp),a1       ;Get the pointer to the DataStream
  160.         lea.l    stuffChar(pc),a2
  161.         move.l    _AbsExecBase,a6
  162.         jsr    _LVORawDoFmt(a6)
  163.  
  164.         movem.l (sp)+,a2/a3/a6
  165.         rts
  166.  
  167.     ;------ PutChProc function used by RawDoFmt -----------
  168.     stuffChar:
  169.         move.b    d0,(a3)+        ;Put data to output string
  170.         rts
  171.  
  172.    WARNING
  173.     This Amiga ROM function formats word values in the data stream.  If
  174.     your compiler defaults to longs, you must add an "l" to your
  175.     % specifications.  This can get strange for characters, which might
  176.     look like "%lc".
  177.  
  178.     The result of RawDoFmt() is *ONLY* valid in V36 and later releases
  179.     of EXEC.  Pre-V36 versions of EXEC have "random" return values.
  180.  
  181.    SEE ALSO
  182.     Documentation on the C language "printf" call in any C language
  183.     reference book.
  184. PowerUPKernel/PPCGetAttrs                           PowerUPKernel/PPCGetAttrs
  185.  
  186.     NAME
  187.     PPCGetAttr -- Get PPC Attr
  188.  
  189.     SYNOPSIS
  190.     Result = PPCGetAttrs(Tag)
  191.     D0                   gpr3
  192.  
  193.     ULONG PPCGetAttrs(ULONG);
  194.  
  195.     FUNCTION
  196.     Gives you infos about the PPC enviroment depending on the tag.
  197.  
  198.     INPUTS
  199.     Tag - The supported tags
  200.  
  201.     o PPCINFOTAG_CPU
  202.       returns the version of the processor to detect the PPC
  203.       type the system is running on. See your PowerPC Manuals
  204.       "pvr" descriptions and check out the include "/ppclib/ppc.h.
  205.       Use the ti_Data field as the processor number.
  206.  
  207.     o PPCINFOTAG_CPUREV
  208.       returns the revision of the processor.
  209.       Use the ti_Data field as the processor number.
  210.     
  211.     o PPCINFOTAG_CPUCOUNT
  212.       returns the numbers of processors
  213.  
  214.     o PPCINFOTAG_CPUCLOCK
  215.       returns the clock of the cpu in Mhz.
  216.       Use the ti_Data field as the processor number.
  217.  
  218.     o PPCINFOTAG_CPUPLL (V45)
  219.       returns the clock devider of the cpu.
  220.       Use the ti_Data field as the processor number.
  221.  
  222.     RESULT
  223.     result    - depends on the requested Tags
  224.  
  225.     SEE ALSO
  226.     PPCSetAttrs(), ppclib/ppc.h
  227.  
  228. ppc.library/PPCAddPortList                         ppc.library/PPCAddPortList
  229.  
  230.    NAME
  231.     PPCAddPortList -- Add a port to the PPCPortList object
  232.  
  233.    SYNOPSIS
  234.     Success =  PPCAddPortList(PPCPortList,PPCPort)
  235.     D0                       A0          A1
  236.  
  237.     BOOL PPCAddPortList(void*,void*);
  238.  
  239.    FUNCTION
  240.     This function adds a new Port to your PPCPortList object.
  241.  
  242.    INPUT
  243.     PPCPortList - a pointer to the PPCPortList object
  244.     PPCPort     - a pointer to the PPC Message port
  245.  
  246.    RESULT
  247.     Success - A Boolean tells you if the operation was successful.
  248.  
  249.    SEE ALSO
  250.     PPCCreatePortList(), ppclib/message.h
  251.  
  252. ppc.library/PPCAllocMem                               ppc.library/PPCAllocMem
  253.  
  254.     NAME
  255.     PPCAllocMem -- Alloc a PPC cache aligned memory block
  256.  
  257.     SYNOPSIS
  258.     Memory = PPCAllocMem(size,attributes )
  259.     D0                 D0        D1
  260.  
  261.     void *PPCAllocMem(ULONG,ULONG);
  262.  
  263.     FUNCTION
  264.     Allocates a memoryblock which is aligned to the PPC cache lines.
  265.     You should only use the PPC with memblocks allocated through
  266.     this function.
  267.  
  268.     INPUTS
  269.     Size         - memory block size
  270.     Attributes    - memory attributes
  271.  
  272.       o exec/memory.h attributes
  273.  
  274.       o MEMF_NOCACHESYNCPPC for a synchronized non cacheable mapped
  275.         memory area on the PPC side. The Amiga side is still copyback then.
  276.  
  277.       o MEMF_NOCACHESYNCM68k for a synchronized non cacheable mapped
  278.         memory area on the M68k side. The PPC side is still copyback then.
  279.  
  280.       If you use the M68k and PPC attribute at the same time the memory
  281.       is mapped noncacheable on both sides. This also means that your
  282.       allocation is 4096 Bytes aligned that may waste memory if you need
  283.       less ram.
  284.  
  285.     RESULT
  286.     Memory    - ptr to the memory block
  287.  
  288.     NOTES
  289.     The reason for this routine is that there's a serious
  290.     cache copyback problem when ppc and 68060 cache lines
  291.     cross borders. Then the contents of the memory isn't guranteed.
  292.     The cache issue is explained in detail in Docs/PowerUP.guide
  293.  
  294.     SEE ALSO
  295.     AllocMem(), FreeMem(), exec/memory.h
  296.  
  297. ppc.library/PPCAllocVec                               ppc.library/PPCAllocVec
  298.  
  299.     NAME
  300.     PPCAllocVec -- allocate memory and keep track of the size
  301.  
  302.     SYNOPSIS
  303.     memoryBlock = PPCAllocVec(byteSize, attributes)
  304.     D0               D0     D1
  305.  
  306.     void *PPCAllocVec(ULONG, ULONG);
  307.  
  308.     INPUTS
  309.     Size         - memory block size
  310.     Attributes    - memory attributes
  311.  
  312.       o exec/memory.h attributes
  313.  
  314.       o MEMF_NOCACHESYNCPPC for a synchronized non cacheable mapped
  315.         memory area on the PPC side. The Amiga side is still copyback then.
  316.  
  317.       o MEMF_NOCACHESYNCM68k for a synchronized non cacheable mapped
  318.         memory area on the M68k side. The PPC side is still copyback then.
  319.  
  320.       If you use the M68k and PPC attribute at the same time the memory
  321.       is mapped noncacheable on both sides. This also means that your
  322.       allocation is 4096 Bytes aligned that may waste memory if you need
  323.       less ram.
  324.  
  325.     RESULT
  326.     Memory    - ptr to the memory block
  327.  
  328.     FUNCTION
  329.     This function works identically to AllocMem(), but tracks the size
  330.     of the allocation.
  331.  
  332.     See the PPCAllocMem() documentation for details.
  333.  
  334.     WARNING
  335.     The result of any memory allocation MUST be checked, and a viable
  336.     error handling path taken.  ANY allocation may fail if memory has
  337.     been filled.
  338.     The cache issue is explained in detail in Docs/PowerUP.guide
  339.  
  340.     SEE ALSO
  341.     PPCFreeVec(), PPCAllocMem()
  342.  
  343. ppc.library/PPCAllocVecPooled                   ppc.library/PPCAllocVecPooled
  344.  
  345.    NAME
  346.     PPCAllocVecPooled -- allocate Pool memory and keep track of the size
  347.  
  348.    SYNOPSIS
  349.     memoryBlock = PPCAllocVecPooled(Pool,byteSize)
  350.     D0                        A0   D0
  351.  
  352.     void *PPCAllocVec(void*, ULONG);
  353.  
  354.    FUNCTION
  355.     This function works identically to PPCAllocPooled(), but tracks
  356.     the size of the allocation.
  357.  
  358.     See the PPCAllocPooled() documentation for details.
  359.  
  360.    WARNING
  361.     The result of any memory allocation MUST be checked, and a viable
  362.     error handling path taken.  ANY allocation may fail if memory has
  363.     been filled.
  364.  
  365.    SEE ALSO
  366.     PPCFreeVecPooled
  367.  
  368. ppc.library/PPCCacheClearE                         ppc.library/PPCCacheClearE
  369.  
  370.    NAME
  371.     PPCCacheClearE - Cache clearing with extended control
  372.  
  373.    SYNOPSIS
  374.     PPCCacheClearE(address,length,caches)
  375.                    a0      d0     d1
  376.  
  377.     void PPCCacheClearE(APTR,ULONG,ULONG);
  378.  
  379.    FUNCTION
  380.     This function does the same the CacheClearE() function does
  381.     with the difference that it actually flushes only the memory
  382.     area you specified instead of flushing all by default.
  383.     As it seems the system has problems with an optimized CacheClearE()
  384.     function it is now integrated in the ppc.library
  385.  
  386.  
  387.    INPUTS
  388.     address - Address to start the operation.  This may be rounded
  389.           due to hardware granularity.
  390.     length    - Length of area to be cleared, or $FFFFFFFF to indicate all
  391.           addresses should be cleared.
  392.     caches  - Bit flags to indicate what caches to affect.  The current
  393.           supported flags are:
  394.             CACRF_ClearI    ;Clear instruction cache
  395.             CACRF_ClearD    ;Clear data cache
  396.           All other bits are reserved for future definition.
  397.  
  398. ppc.library/PPCCacheInvalidE                     ppc.library/PPCCacheInvalidE
  399.  
  400.    NAME
  401.     PPCCacheInvalidE - Cache Invaliding with extended control
  402.  
  403.    SYNOPSIS
  404.     PPCCacheInvalidE(address,length,caches)
  405.                           a0      d0     d1
  406.  
  407.     void PPCCacheInvalidE(APTR,ULONG,ULONG);
  408.  
  409.    FUNCTION
  410.     This function does invalids the contents of the cache for the
  411.     area you specified. This means that dirty lines of the cache
  412.     aren`t written back which may cause wrong data if not used
  413.     correctly.
  414.  
  415.    ATTENTION
  416.     If you`re address area you specify isn`t line aligned you're
  417.     system will run havoc quite fast.
  418.     Because of the wrong data in the cache which may be used by
  419.     other tasks which crosses the invalid page borders.
  420.  
  421.  
  422.    INPUTS
  423.     address - Address to start the operation.  This may be rounded
  424.           due to hardware granularity. 
  425.  
  426.               MUST BE LINESIZE(16 Bytes) ALIGNED !!!!!!!!!!!!!!!
  427.  
  428.     length    - Length of area to be Invalided, or $FFFFFFFF to indicate all
  429.           addresses should be pushed.(NOT INVALID possible here)
  430.  
  431.               MUST BE LINESIZE(16 Bytes) ALIGNED !!!!!!!!!!!!!!!
  432.  
  433.     caches  - Bit flags to indicate what caches to affect.  The current
  434.           supported flags are:
  435.             CACRF_ClearI    ;Invalid instruction cache
  436.             CACRF_ClearD    ;Invalid data cache
  437.           All other bits are reserved for future definition.
  438.  
  439. ppc.library/PPCCacheTrashE                         ppc.library/PPCCacheTrashE
  440.  
  441.    NAME
  442.     PPCCacheTrashE - Cache Trashing with extended control
  443.  
  444.    SYNOPSIS
  445.     PPCCacheTrashE(address,length,caches)
  446.                    a0      d0     d1
  447.  
  448.     void PPCCacheTrashE(APTR,ULONG,ULONG);
  449.  
  450.    FUNCTION
  451.     This function does clean the contents of the cache for the
  452.     area you specified. This means you have no controll if dirty
  453.     contents is written back or ignored.
  454.     The fastest method to clean the cache for a ram area where
  455.     you don`t care for the contents.
  456.  
  457.    INPUTS
  458.     address - Address to start the operation.  This may be rounded
  459.           due to hardware granularity. 
  460.  
  461.     length    - Length of area to be Invalided.
  462.  
  463.     caches  - Bit flags to indicate what caches to affect.  The current
  464.           supported flags are:
  465.             CACRF_ClearI    ;Trash instruction cache
  466.             CACRF_ClearD    ;Trash data cache
  467.           All other bits are reserved for future definition.
  468.  
  469.    NOTE
  470.     This was the old CacheInvalidE() but some people demanded
  471.     a real CacheInvalidE so they got it.
  472.  
  473. ppc.library/PPCCreateMessage                     ppc.library/PPCCreateMessage
  474.  
  475.     NAME
  476.     PPCCreateMessage -- Create a Message for a PPCMsgPort
  477.  
  478.     SYNOPSIS
  479.     Message PPCCreateMessage(PPCPort,Length)
  480.                          A0      D0
  481.  
  482.     void* PPCCreateMessage(void*,ULONG);
  483.  
  484.     FUNCTION
  485.     Creates a Message for PPCPort communication.
  486.        The Length parameter maybe useful in the future to optimize
  487.     messages in certain addressmappings for IPC in a MP system.
  488.     It isn`t necessary to specify a Length which is > max(DataSize)
  489.     but it may result in a performance win in the future.
  490.     A message and msgdata can`t be reused until you haven`t received
  491.     a replymsg.
  492.  
  493.     INPUTS
  494.     PPCPort    - Ptr to an object generated by PPCCreatePort
  495.     Length  - Max Length for Messages
  496.  
  497.     BUGS
  498.     Probably a lot
  499.  
  500.     SEE ALSO
  501.     PPCDeleteMessage
  502.  
  503. ppc.library/PPCCreatePool                           ppc.library/PPCCreatePool
  504.  
  505.     NAME
  506.     PPCCreatePool -- Generate a private memory pool header (V39)
  507.  
  508.     SYNOPSIS
  509.     newPool=PPCCreatePool(memFlags,puddleSize,threshSize)
  510.     d0                    d0       d1         d2
  511.  
  512.     void *PPCCreatePool(ULONG,ULONG,ULONG);
  513.  
  514.     FUNCTION
  515.     Allocate and prepare a new memory pool header.    Each pool is a
  516.     separate tracking system for memory of a specific type.  Any number
  517.     of pools may exist in the system.
  518.  
  519.     Pools automatically expand and shrink based on demand.    Fixed sized
  520.     "puddles" are allocated by the pool manager when more total memory
  521.     is needed.  Many small allocations can fit in a single puddle.
  522.     Allocations larger than the threshSize are allocation in their own
  523.     puddles.
  524.  
  525.     At any time individual allocations may be freed.  Or, the entire
  526.     pool may be removed in a single step.
  527.  
  528.     INPUTS
  529.     memFlags - a memory flags specifier, as taken by AllocMem.
  530.  
  531.       o exec/memory.h attributes
  532.  
  533.       o MEMF_NOCACHESYNCPPC for a synchronized non cacheable mapped
  534.         memory area on the PPC side. The Amiga side is still copyback then.
  535.  
  536.       o MEMF_NOCACHESYNCM68k for a synchronized non cacheable mapped
  537.         memory area on the M68k side. The PPC side is still copyback then.
  538.  
  539.       If you use the M68k and PPC attribute at the same time the memory
  540.       is mapped noncacheable on both sides. This also means that your
  541.       allocation is 4096 Bytes aligned that may waste memory if you need
  542.       less ram.
  543.  
  544.     puddleSize - the size of Puddles...
  545.     threshSize - the largest allocation that goes into normal puddles
  546.                  This *MUST* be less than or equal to puddleSize
  547.                  (CreatePool() will fail if it is not)
  548.  
  549.     RESULT
  550.     The address of a new pool header, or NULL for error.
  551.  
  552.     SEE ALSO
  553.     PPCDeletePool(), PPCAllocPooled(), PPCFreePooled(), exec/memory.h
  554.  
  555. ppc.library/PPCCreatePort                           ppc.library/PPCCreatePort
  556.  
  557.     NAME
  558.     PPCCreatePort -- Create a PPC Message Port
  559.  
  560.     SYNOPSIS
  561.     Port  PPCCreatePort(Tags)
  562.                     A0
  563.  
  564.     void* PPCCreatePort(struct TagItem*);
  565.  
  566.     FUNCTION
  567.     Creates a local PPC MsgPort to receive messages from the PPC.
  568.        With a specified name you can mark it public to the ppc.library.
  569.        This shouldn`t be missunderstood as a public system ports because
  570.     PPCPorts and Amigaports are different entities.
  571.  
  572.     INPUTS
  573.     Tags        - Tags to specify a public port for example.
  574.  
  575.     BUGS
  576.     Probably a lot
  577.  
  578.     SEE ALSO
  579.     PPCDeletePort
  580.  
  581. ppc.library/PPCCreatePortList                   ppc.library/PPCCreatePortList
  582.  
  583.    NAME
  584.     PPCCreatePortList -- Create a List of Ports to wait for
  585.  
  586.    SYNOPSIS
  587.     PPCPortList = PPCCreatePortList(PPCPortArray,ExtSignals)
  588.     D0                                A0           D0
  589.  
  590.     void* PPCCreatePortList(void**,ULONG);
  591.  
  592.    FUNCTION
  593.     This function creates a multi PPCPort object you can
  594.     use to wait for several ports at once.
  595.     If necessary, the Wait function will be called to wait for
  596.     the port signal.  If a message is already present at the
  597.     port, this function will return immediately.  The return
  598.     value is always a pointer to the first PPC Message queued (but
  599.     it is not removed from the queue.
  600.  
  601.    INPUT
  602.     PPCPortArray - a pointer to a PPC Message port array..NULL terminated
  603.     ExtSignals   - mask of extended signals you wanna wait for
  604.                    additionally to the PPCPorts.
  605.  
  606.    RESULT
  607.     PPCMessage - a pointer to the first available PPC Message or NULL.
  608.  
  609.    SEE ALSO
  610.     PPCGetMessage(), ppclib/message.h
  611.  
  612. ppc.library/PPCCreateTask                           ppc.library/PPCCreateTask
  613.  
  614.     NAME
  615.     PPCCreateTask -- Create PPC Task
  616.  
  617.     SYNOPSIS
  618.     TaskObject = PPCCreateTask( ElfObject, Tags )
  619.     D0                          A0         A1
  620.  
  621.     void *PPCCreateTask(void*);
  622.  
  623.     FUNCTION
  624.     Creates a PPCTask on the PPC Kernel with the given ElfObject.
  625.     The ElfObject contains all kinds of informations the loaded .elf
  626.     object provided.
  627.     This function first creates an IO M68k Process which is used for
  628.     all kinds of IO handling the PPCTask needs. Basicly the PPC sends
  629.     this tasks small internal msg which tell this PPCTask to allocate
  630.     ram, open files or call certain OS functions for example.
  631.     It`s obvious that all OS functions you call work on the level of
  632.     this message process which means that certain operations which depend
  633.     on this process in an asynchron manner make no sense.
  634.     Or Task manupulations like RemTask(NULL) or simular things also
  635.     make no sense from the PPC side.
  636.     Well..if you think about the design you should understand what you
  637.     can do and what not.
  638.  
  639.     ADDON
  640.     (V45)
  641.     Now the Tags are also passed to the M68k Msg CreateProcess which
  642.     is created inside this function. This way you have the complete
  643.     controll over the Filehandles when the PPC M68k process    exits.
  644.     This makes the PPCTASKTAG_INPUTHANDLE, PPCTASKTAG_OUTPUTHANDLE and
  645.     PPCTASKTAG_INPUTHANDLE obsolete. But if you still use these tags
  646.     you overrule following NP_ CreateNewProc() tags.
  647.  
  648.     INPUTS
  649.     ElfObject - ElfObject created by PPCLoadObject
  650.     Tags      - Tags to specify a the PPCTasks attributes
  651.       o PPCTASKTAG_NAME,"TaskName"
  652.         specifies the PPCTask`s name. The M68k parallel Process is
  653.         called "PPC:MsgHandler "|"TaskName"
  654.       o PPCTASKTAG_ARG1,Arg1
  655.         specifies the gpr3 register when the PPCTask is started which
  656.         is equal to the first parameter in the System V ABI.
  657.         So main(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8) can be used in
  658.         C.
  659.       o PPCTASKTAG_ARG2,Arg2
  660.         specifies the gpr4 register when the PPCTask is started.
  661.         See PPCTASKTAG_ARG1 explaination.
  662.       o PPCTASKTAG_ARG3,Arg3
  663.         specifies the gpr5 register when the PPCTask is started.
  664.         See PPCTASKTAG_ARG1 explaination.
  665.       o PPCTASKTAG_ARG4,Arg4
  666.         specifies the gpr6 register when the PPCTask is started.
  667.         See PPCTASKTAG_ARG1 explaination.
  668.       o PPCTASKTAG_ARG5,Arg5
  669.         specifies the gpr7 register when the PPCTask is started.
  670.         See PPCTASKTAG_ARG1 explaination.
  671.       o PPCTASKTAG_ARG6,Arg6
  672.         specifies the gpr8 register when the PPCTask is started.
  673.         See PPCTASKTAG_ARG1 explaination.
  674.       o PPCTASKTAG_ARG7,Arg7
  675.         specifies the gpr9 register when the PPCTask is started.
  676.         See PPCTASKTAG_ARG1 explaination.
  677.       o PPCTASKTAG_ARG8,Arg8
  678.         specifies the gpr10 register when the PPCTask is started.
  679.         See PPCTASKTAG_ARG1 explaination.
  680.       o PPCTASKTAG_CACHEFLUSH,Boolean (Default TRUE)
  681.         this flag defines if the Kernel would do the automatic CacheFlush
  682.         or if you know it better. Well..this function is more a relict from
  683.         the past...it`s only really useful for taking over the cacheflush
  684.         for IO memory areas yourself. A good suggestion is to let this
  685.         handle the Kernel.
  686.       o PPCTASKTAG_ERROR,(ULONG*) ErrorPtr
  687.         defines the ptr for a more precise return error result
  688.       o PPCTASKTAG_STACKSIZE,(ULONG)    (Default 8192)
  689.         defines the PPCTask stacksize
  690.       o PPCTASKTAG_PRIORITY,(int)        (Default 0)
  691.         defines the PPCTask priority
  692.       o PPCTASKTAG_INPUTHANDLE,BPTR        (Default "nil:")
  693.         defines the M68k Message Task`s Input Handle.
  694.         Read the Process`s pr_Input description in dos/dosextens.h
  695.         (V45) Obsolete...use NP_ CreateNewProc() tags
  696.       o PPCTASKTAG_OUTPUTHANDLE,BPTR        (Default "nil:")
  697.         defines the M68k Message Task`s Output Handle.
  698.         Read the Process`s pr_Output description in dos/dosextens.h
  699.         (V45) Obsolete...use NP_ CreateNewProc() tags
  700.       o PPCTASKTAG_ERRORHANDLE,BPTR        (Default "nil:")
  701.         defines the M68k Message Task`s Error Handle.
  702.         Read the Process`s pr_Error description in dos/dosextens.h
  703.         (V45) Obsolete...use NP_ CreateNewProc() tags
  704.       o PPCTASKTAG_STOPTASK,Boolean        (Default FALSE)
  705.         stops the Task before it runs on the PPC to let the debugger
  706.         controll the initial execution.
  707.       o PPCTASKTAG_EXCEPTIONHOOK,(struct Hook*) (Default NULL=SystemHook)
  708.         sets a custom debugger ExceptionHook for the Task.
  709.         The M68k Hook is called when a PPC TaskObject gets an
  710.         exception which can be processor or software(Kernel Msg)
  711.         related.
  712.         That`s the way the ppc.library calls the Hook:
  713.  
  714.         BOOL CallHookPkt(hook,TaskObject,ExceptionMsg);
  715.  
  716.         The Hook Function is NOT allowed to call PPCLibBase
  717.         functions to avoid deadlocks.
  718.         After the Hook function returns the ExceptionMsg
  719.         contents IS NOT valid anymore.
  720.         So you should copy the ExceptionMsg contents to a private
  721.         buffer and then signal your debugger control task about
  722.         the event.
  723.         The Hook return BOOL should tell the ppc.library if all
  724.         worked fine.
  725.         The ExceptionMsg contains a Type field which describes the
  726.         exception type and then the PPCTask`s context frame.
  727.         There are 2 different Types of exceptions. The cpu exceptions
  728.         like PROGRAM Exceptions and Kernel exception which tell you
  729.         about important events like a STOPTASK and a FINISHTASK.
  730.       o PPCTASKTAG_MSGPORT,PPCPort        (Default NULL)
  731.         creates PPCPort which belongs to the PPCTask, so you don`t have
  732.         to create one yourself in the PPC task if you need it.
  733.         Supported by PPCGetTaskAttr().
  734.       o PPCTASKTAG_STARTUP_MSG,PPCMessage    (Default NULL)
  735.         provides a PPCTask startup msg. This msg will be replied
  736.         by the ppc.library after the PPC Task ends so you can use
  737.         this to know that the PPCTask is gone so a PPCUnloadObject()
  738.         is save.
  739.         Supported by PPCGetTaskAttr()
  740.       o PPCTASKTAG_STARTUP_MSGDATA,Data
  741.         the data ptr or if the length is 0 the additional msgid for the message.
  742.       o PPCTASKTAG_STARTUP_MSGLENGTH,Length
  743.         the length for the message.
  744.       o PPCTASKTAG_STARTUP_MSGID,MsgID
  745.         the length for the message.
  746.       o PPCTASKTAG_WAITFINISH,Boolean    (Default FALSE)
  747.         runs the task in a synchron way, so you don`t have to care
  748.         for the PPCTask communication that much.
  749.         The function doesn`t return until the task completes
  750.         and the return value is not the TaskObject but the
  751.         Task`s return value.
  752.         To check if the task runned correctly check out the
  753.       o PPCTASKTAG_BREAKSIGNAL,Boolean    (Default FALSE)
  754.         activates the CTRL-C;D;E;F PPCTask gateway, so you don`t need
  755.         to use PPCCallOS to check for breaksignals.
  756.       o PPCTASKTAG_ERROR fieldptr.
  757.         With this Tag you can do the same what the old RunTaskObject
  758.         does which interface is a bit limited(compatibility to the
  759.         first ppc.library version)
  760.  
  761.     RESULT
  762.     result    - the PPCTask Object(maybe NULL) or the Result code of the
  763.               PPCTask when used in synchron mode
  764.  
  765.     NOTE
  766.     It doesn't free the ElfObject because you may wanna be able to
  767.     reuse it.
  768.  
  769.     EXAMPLE
  770.  
  771.  
  772.     SEE ALSO
  773.     PPCCreateTask,PPCRunObject,PowerUP/ppclib/Tasks.h
  774.  
  775. ppc.library/PPCDeleteMessage                     ppc.library/PPCDeleteMessage
  776.  
  777.     NAME
  778.     PPCDeleteMessage -- Delete a PPC Message
  779.  
  780.     SYNOPSIS
  781.     PPCDeleteMessage(PPCMessage)
  782.                      A0
  783.  
  784.     void PPCDeleteMessage(void*);
  785.  
  786.     FUNCTION
  787.     Deletes a PPC Message. You can only delete a msg your
  788.     task allocated and which hasn`t yet been replied.
  789.  
  790.     INPUTS
  791.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  792.     Length     -
  793.  
  794.     BUGS
  795.     Probably a lot
  796.  
  797.     SEE ALSO
  798.     PPCCreatePort
  799.  
  800. ppc.library/PPCDeletePool                           ppc.library/PPCDeletePool
  801.  
  802.     NAME
  803.     PPCDeletePool --  Drain an entire memory pool (V39)
  804.  
  805.     SYNOPSIS
  806.     PPCDeletePool(poolHeader)
  807.                   a0
  808.  
  809.     void PPCDeletePool(void *);
  810.  
  811.     FUNCTION
  812.     Frees all memory in all pudles of the specified pool header, then
  813.     deletes the pool header.  Individual free calls are not needed.
  814.  
  815.     INPUTS
  816.     poolHeader - as returned by CreatePool().
  817.  
  818.     SEE ALSO
  819.     PPCCreatePool(), PPCAllocPooled(), PPCFreePooled()
  820.  
  821. ppc.library/PPCDeletePort                           ppc.library/PPCDeletePort
  822.  
  823.     NAME
  824.     PPCDeletePort -- Delete a PPC Message Port
  825.  
  826.     SYNOPSIS
  827.     Success PPCDeletePort(PPCPort)
  828.                           A0
  829.  
  830.     BOOL PPCDeletePort(void*);
  831.  
  832.     FUNCTION
  833.     Deletes a local PPC MsgPort when the Port isn`t obtained
  834.     by somebody else. If it`s obtained it returns FALSE so
  835.     you have to decide yourself how you wanna recover this
  836.     problem which maybe caused by a synchronizing problem
  837.     between your M68k and PPC applications
  838.  
  839.     INPUTS
  840.     PPCPort    - Ptr to an object generated by PPCCreatePort
  841.  
  842.     BUGS
  843.     Probably a lot
  844.  
  845.     SEE ALSO
  846.     PPCCreatePort
  847.  
  848. ppc.library/PPCDeletePortList                   ppc.library/PPCDeletePortList
  849.  
  850.    NAME
  851.     PPCDeletePortList -- Deletes a PortList object
  852.  
  853.    SYNOPSIS
  854.     PPCDeletePortList(PPCPortList)
  855.                       A0
  856.  
  857.     BOOL PPCDeletePortList(void*);
  858.  
  859.    FUNCTION
  860.     This function deletes the PPCPortList object.
  861.  
  862.    INPUT
  863.     PPCPortList - a pointer to the PPCPortList object
  864.  
  865.    RESULT
  866.     Success - A Boolean tells you if the operation was successful.
  867.  
  868.    SEE ALSO
  869.     PPCCreatePortList(), ppclib/message.h
  870.  
  871. ppc.library/PPCDeleteTask                           ppc.library/PPCDeleteTask
  872.  
  873.     NAME
  874.     PPCDeleteTask -- Delete PPC Task
  875.  
  876.     SYNOPSIS
  877.     Success PPCDeleteTask(TaskObject)
  878.                       A0
  879.  
  880.     BOOL PPCDeleteTask(void*);
  881.  
  882.     FUNCTION
  883.     Removes a PPC Task
  884.  
  885.     INPUTS
  886.     TaskObject - ptr to the TaskObject returned by PPCCreateTask
  887.  
  888.     INPUTS
  889.     Result - if the remove was successful.
  890.  
  891.     SEE ALSO
  892.     PPCLoadObject,PPCDeleteTask,PPCRunObject,PowerUP/ppclib/Tasks.h
  893.  
  894. ppc.library/PPCFindTask                               ppc.library/PPCFindTask
  895.  
  896.     NAME
  897.     PPCFindTask -- Find PPC Task
  898.  
  899.     SYNOPSIS
  900.     TaskObject PPCFindTask(Name)
  901.                        A0
  902.  
  903.     void* PPCFindTask(char*);
  904.  
  905.     FUNCTION
  906.     Find PPC Task by Name
  907.  
  908.     INPUTS
  909.     Name - Name of the PPC Task to search for.
  910.  
  911.     Result
  912.     returns a TaskObject with the given name or NULL.
  913.  
  914.     SEE ALSO
  915.     PPCCreateTask,PowerUP/ppclib/Tasks.h
  916.  
  917. ppc.library/PPCFindTaskObject                   ppc.library/PPCFindTaskObject
  918.  
  919.     NAME
  920.     PPCFindTaskObject -- Check if the PPC TaskID exists
  921.  
  922.     SYNOPSIS
  923.     TaskObject PPCFindTaskObject(TaskObject)
  924.                              A0
  925.  
  926.     void* PPCFindTaskObject(ULONG);
  927.  
  928.     FUNCTION
  929.     Check if the TaskObject really exists
  930.  
  931.     INPUTS
  932.     TaskObject - TaskObject you search for
  933.  
  934.     RESULT
  935.     TaskObject - TaskObject you searched for or NULL
  936.  
  937.     SEE ALSO
  938.     PPCCreateTask,PPCFindTask,PowerUP/ppclib/Tasks.h
  939.  
  940. ppc.library/PPCFreeMem                                 ppc.library/PPCFreeMem
  941.  
  942.     NAME
  943.     PPCFreeMem -- Frees a PPC cache aligned memory block
  944.  
  945.     SYNOPSIS
  946.     PPCFreeMem(Memory,size)
  947.                  a1      D0
  948.  
  949.     void PPCFreeMem(APTR,ULONG);
  950.  
  951.     FUNCTION
  952.     Frees a memoryblock which was allocated by PPCAllocMem
  953.  
  954.     INPUTS
  955.     MemoryBlock    - memory block
  956.     Size         - memory block size
  957.  
  958.     NOTES
  959.     The reason for this routine is that there's a serious
  960.     cache copyback problem when ppc cache line and 68060 cache line
  961.     cross borders. Then the contents of the memory isn't guranteed.
  962.     The cache issue is explained in detail in Docs/PowerUP.guide
  963.  
  964.     SEE ALSO
  965.     AllocMem(), FreeMem(), exec/memory.h
  966.  
  967. ppc.library/PPCFreeVec                                 ppc.library/PPCFreeVec
  968.  
  969.    NAME
  970.     PPCFreeVec -- return PPCAllocVec() memory to the system
  971.  
  972.    SYNOPSIS
  973.     PPCFreeVec(memoryBlock)
  974.             A1
  975.  
  976.     void PPCFreeVec(void *);
  977.  
  978.    FUNCTION
  979.     Free an allocation made by the PPCAllocVec() call.  The memory will
  980.     be returned to the system pool from which it came.
  981.  
  982.    NOTE
  983.     If a block of memory is freed twice, the system will Guru. The
  984.     Alert is AN_FreeTwice ($01000009).   If you pass the wrong pointer,
  985.     you will probably see AN_MemCorrupt $01000005.  Future versions may
  986.     add more sanity checks to the memory lists.
  987.  
  988.    INPUTS
  989.     memoryBlock - pointer to the memory block to free, or NULL.
  990.  
  991.    SEE ALSO
  992.     PPCAllocVec(), exec/memory.h
  993.  
  994. ppc.library/PPCFreeVecPooled                     ppc.library/PPCFreeVecPooled
  995.  
  996.    NAME
  997.     PPCFreeVecPooled -- return PPCAllocVecPooled() memory to the system  (V36)
  998.  
  999.    SYNOPSIS
  1000.     PPCFreeVecPooled(Pool,memoryBlock)
  1001.                  A0   A1
  1002.  
  1003.     void PPCFreeVecPooled(void*,void *);
  1004.  
  1005.    FUNCTION
  1006.     Free an allocation made by the PPCAllocVecPooled() call.  The memory will
  1007.     be returned to the system pool from which it came.
  1008.  
  1009.    NOTE
  1010.     If a block of memory is freed twice, the system will Guru. The
  1011.     Alert is AN_FreeTwice ($01000009).   If you pass the wrong pointer,
  1012.     you will probably see AN_MemCorrupt $01000005.  Future versions may
  1013.     add more sanity checks to the memory lists.
  1014.  
  1015.    INPUTS
  1016.     memoryBlock - pointer to the memory block to free, or NULL.
  1017.  
  1018.    SEE ALSO
  1019.     PPCAllocVecPooled
  1020.  
  1021. ppc.library/PPCGetAttrs                               ppc.library/PPCGetAttrs
  1022.  
  1023.     NAME
  1024.     PPCGetAttrs -- Get PPC Attrs
  1025.     PPCGetAttrsTags -- Varargs Stub for PPCGetAttrs()
  1026.  
  1027.     SYNOPSIS
  1028.     Result = PPCGetAttrs(Tags )
  1029.     D0                   A0
  1030.  
  1031.     ULONG PPCGetAttrs(struct TagItem*);
  1032.     ULONG PPCGetAttrsTags(...);
  1033.  
  1034.     FUNCTION
  1035.     Gives you infos about the PPC enviroment depending on the tag.
  1036.  
  1037.     INPUTS
  1038.     Tags - The supported tags
  1039.  
  1040.     o PPCINFOTAG_CPU
  1041.       returns the version of the processor to detect the PPC
  1042.       type the system is running on. See your PowerPC Manuals
  1043.       "pvr" descriptions and check out the include "/ppclib/ppc.h.
  1044.       Use the ti_Data field as the processor number.
  1045.  
  1046.     o PPCINFOTAG_CPUREV
  1047.       returns the revision of the processor.
  1048.       Use the ti_Data field as the processor number.
  1049.     
  1050.     o PPCINFOTAG_CPUCOUNT
  1051.       returns the numbers of processors
  1052.  
  1053.     o PPCINFOTAG_CPUCLOCK
  1054.       returns the clock of the cpu in Mhz.
  1055.       Use the ti_Data field as the processor number.
  1056.  
  1057.     o PPCINFOTAG_CPUPLL (V45)
  1058.       returns the clock devider of the cpu.
  1059.       Use the ti_Data field as the processor number.
  1060.  
  1061.     o PPCINFOTAG_EXCEPTIONHOOK (V45)
  1062.       returns the global exception Hook or NULL.
  1063.  
  1064.     RESULT
  1065.     result    - depends on the requested Tags
  1066.  
  1067.     SEE ALSO
  1068.     PPCSetAttrs(), ppclib/ppc.h
  1069.  
  1070. ppc.library/PPCGetMessage                           ppc.library/PPCGetMessage
  1071.  
  1072.     NAME
  1073.     PPCGetMessage -- Gets a PPC Message from a PPC Port
  1074.  
  1075.     SYNOPSIS
  1076.     Message = PPCGetMessage(PPCPort)
  1077.     D0                      A0
  1078.  
  1079.     void* PPCGetMessage(void*);
  1080.  
  1081.     FUNCTION
  1082.     Checks for a message in the PPCPort`s msglist and
  1083.     removes it from the queue. Until you haven`t replied
  1084.     the PPC Message you can read from the embedded Data
  1085.     field informations. You MUST NOT write to these
  1086.     informations.
  1087.  
  1088.     INPUTS
  1089.     PPCPort - Ptr to PPC Port
  1090.  
  1091.     RESULT
  1092.     PPCMessage - First PPC Message in the PPC Port msglist
  1093.                  or NULL if the the msglist is empty.
  1094.  
  1095.     SEE ALSO
  1096.     PPCReplyMessage(), PPCCreateMessage(), ppclib/message.h
  1097.  
  1098. ppc.library/PPCGetMessageAttr                   ppc.library/PPCGetMessageAttr
  1099.  
  1100.     NAME
  1101.     PPCGetMessageAttr -- Get Infos about a PPC Message
  1102.  
  1103.     SYNOPSIS
  1104.     ULONG PPCGetMessageAttr(PPCMessage,Attr)
  1105.                             A0         D0
  1106.  
  1107.     ULONG PPCGetMessageAttr(void*,ULONG);
  1108.  
  1109.     FUNCTION
  1110.     Returns informations about a PPC Message. This way you
  1111.     can get a Ptr to the Data the message transports and
  1112.     the length of the message.
  1113.  
  1114.     INPUTS
  1115.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1116.     Attr       - Information Attribute
  1117.  
  1118.     BUGS
  1119.     Probably a lot
  1120.  
  1121.     SEE ALSO
  1122.     PPCGetMessage
  1123.  
  1124. ppc.library/PPCGetObjectAttrs                   ppc.library/PPCGetObjectAttrs
  1125.  
  1126.     NAME
  1127.     PPCGetObjectAttrs -- Get Elf Object File(s) information
  1128.     PPCGetObjectAttrsTags -- Varargs Stub for PPCGetObjectAttrs
  1129.  
  1130.     SYNOPSIS
  1131.     Result = PPCGetObjectAttrs(ElfObject,PPCObjectInfo,Tags )
  1132.     D0                   A0        A1            A2
  1133.  
  1134.     ULONG    PPCGetObjectAttrs(void*,struct PPCObjectInfo*,struct TagItem*);
  1135.     ULONG    PPCGetObjectAttrsTags(void*,struct PPCObjectInfo*,...);
  1136.  
  1137.     FUNCTION
  1138.     Gives you certain informations about an ELF PPC binary object
  1139.     or all loaded Elf objects. This way you could get certain
  1140.     symbols,types and all that.
  1141.  
  1142.     INPUTS
  1143.     ElfObject     - ElfObject returned by PPCLoadObject
  1144.     Tags        - Array of Tags
  1145.  
  1146.     RESULT
  1147.  
  1148.     NOTES
  1149.     ELF will be the only format allowed the PowerUP. We don't
  1150.     want alien formats.
  1151.  
  1152.     BUGS
  1153.     Probably a lot
  1154.  
  1155.     SEE ALSO
  1156.     PPCLoadObject(), ppclib/object.h
  1157.  
  1158. ppc.library/PPCGetPortListAttr                 ppc.library/PPCGetPortListAttr
  1159.  
  1160.     NAME
  1161.     PPCGetPortListAttr -- Get Infos about a PPC PortList
  1162.  
  1163.     SYNOPSIS
  1164.     Result = PPCGetPortListAttr(PPCPortList,Attr)
  1165.     D0                          A0         D0
  1166.  
  1167.     ULONG PPCGetPortListAttr(void*,ULONG);
  1168.  
  1169.     FUNCTION
  1170.     Returns informations about a PPC PortList. This way you
  1171.     can get the needed received signal mask in the case you
  1172.     use the extended signalmask
  1173.  
  1174.     INPUTS
  1175.     PPCPortList - Ptr to a PPCPortList object
  1176.     Attr        - Information Attribute
  1177.       o PPCPORTLISTTAG_EXTENDEDSIGNALS
  1178.         returns the extended signal mask.
  1179.       o PPCPORTLISTTAG_RECEIVEDSIGNALS
  1180.         returns the received signal mask. You need this to see
  1181.         if a msg was received AND if you also got a signal from
  1182.         the extended signalmask.
  1183.  
  1184.     SEE ALSO
  1185.     PPCCreatePortList(), PPCPortList(), ppclib/message.h
  1186.  
  1187. ppc.library/PPCGetTaskAttrs                       ppc.library/PPCGetTaskAttrs
  1188.  
  1189.     NAME
  1190.     PPCGetTaskAttrs -- Get PPC Task Info
  1191.     PPCGetTaskAttrsTags -- Varargs Stub for PPCGetTaskAttrs()
  1192.  
  1193.     SYNOPSIS
  1194.     Result PPCGetTaskAttrs(TaskObject,Tags )
  1195.     D0                   A0         A1
  1196.  
  1197.     ULONG PPCGetTaskAttrs(void*,struct TagItem*);
  1198.     ULONG PPCGetTaskAttrsTags(void*,...);
  1199.  
  1200.     FUNCTION
  1201.     Gives you infos about a Task or all Tasks. It depends on the
  1202.     tags if you get back values or ptrs to a node or list of entries
  1203.     which describe a task or tasks.
  1204.     
  1205.  
  1206.     INPUTS
  1207.     TaskObject - The Task you want infos about or NULL if you mean ALL
  1208.     Tags       - The Tags you want.
  1209.       o PPCTASKINFOTAG_NAME
  1210.         returns the name of the TaskObject
  1211.       o PPCTASKINFOTAG_PRIORITY
  1212.         returns the priority of the TaskObject
  1213.       o PPCTASKINFOTAG_CACHEFLUSH
  1214.         returns the cacheflush flag of the TaskObject.
  1215.         see PPCTASKTAG_CACHEFLUSH for more informations
  1216.       o PPCTASKINFOTAG_STACKSIZE
  1217.         returns the stacksize of the TaskObject
  1218.       o PPCTASKINFOTAG_STATE
  1219.         returns the state of the TaskObject.
  1220.         see exec/task.h TS_* for more informations
  1221.       o PPCTASKINFOTAG_TASK,TaskObject
  1222.         overrules the TaskObject parameter of the function
  1223.       o PPCTASKINFOTAG_ALLTASK,Boolean
  1224.         means that the PPCTASKINFOTAG_HOOK Hook is called for
  1225.         all PPCTasks, so you can get informations for all PPCTasks
  1226.       o PPCTASKINFOTAG_HOOK,(struct Hook*)
  1227.            the Hook function is called for every PPCTask so you can
  1228.         ask for informations about every single task. You must not
  1229.         specify a PPCTASKINFOTAG_ALLTASK in such Hook to avoid a
  1230.         deadlock in such Hook function.
  1231.         Msg Parameter is NULL for now.
  1232.         Object Parameter is the TaskObject
  1233.  
  1234.           HookFunc(Hook, TaskObject, NULL);
  1235.  
  1236.       o PPCTASKINFOTAG_SIGALLOC
  1237.         returns the signal allocmask of a PPCTask
  1238.  
  1239.       o PPCTASKINFOTAG_SIGWAIT
  1240.         returns the signal waitmask of a PPCTask
  1241.  
  1242.       o PPCTASKINFOTAG_SIGRECVD
  1243.         returns the signal received mask of a PPCTask
  1244.  
  1245.       o PPCTASKINFOTAG_USEDSTACK
  1246.         returns how much bytes of the stack is used.
  1247.  
  1248.       o PPCTASKINFOTAG_INPUTHANDLE
  1249.         returns the inputhandle file of the M68k MsgTask
  1250.  
  1251.       o PPCTASKINFOTAG_OUTPUTHANDLE
  1252.         returns the outputhandle file of the M68k MsgTask
  1253.  
  1254.       o PPCTASKINFOTAG_ERRORHANDLE
  1255.         returns the errorhandle file of the M68k MsgTask
  1256.  
  1257.       o PPCTASKINFOTAG_VALUEPTR,(void*)
  1258.         specifies the address where to return register values
  1259.         which may not fit into 32bit.
  1260.  
  1261.       o PPCTASKINFOTAG_STARTUP_MSG (V45)
  1262.         returns the PPCTask`s startup msg. This msg will be replied
  1263.         by the ppc.library after the PPC Task ends so you can use
  1264.         this to know that the PPCTask is gone so a PPCUnloadObject()
  1265.         is save. On the PPC side you can use it as a method to pass
  1266.         data.
  1267.  
  1268.       o PPCTASKINFOTAG_STARTUP_MSGDATA (V45)
  1269.         returns the startup`s MsgData. This data field can be used
  1270.         to pass startup data to the PPC. Like some M68k msgport for
  1271.         example.
  1272.  
  1273.       o PPCTASKINFOTAG_STARTUP_MSGLENGTH (V45)
  1274.         returns the startup`s MsgLength.
  1275.  
  1276.       o PPCTASKINFOTAG_STARTUP_MSGID (V45)
  1277.         returns the startup`s MsgID.
  1278.  
  1279.       o PPCTASKINFOTAG_MSGPORT (V45)
  1280.         returns the PPCPort which belongs to the PPCTask. If you
  1281.         haven`t asked for one in PPCCreateTask() the function returns
  1282.         NULL.
  1283.  
  1284.       o PPCTASKINFOTAG_ELFOBJECT (V45)
  1285.         returns the ElfObject for the TaskObject. This may be useful
  1286.         for debugger like tools. Through the ElfObject you can also
  1287.         find out the filename and other things.
  1288.  
  1289.       o PPCTASKINFOTAG_EXCEPTIONHOOK,(struct Hook*) (V45)
  1290.         installs a new ExceptionHandler Hook.
  1291.         Useful in the combination with a CreateTaskHook function.
  1292.  
  1293.       o PPCTASKINFOTAG_PC,void* ValuePtr
  1294.         returns the SRR0 of the task at the ti_Data ValuePtr address
  1295.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1296.         SRR0 is the program counter.
  1297.         The stability of the value depends on PPCTask`s state.
  1298.  
  1299.       o PPCTASKINFOTAG_MSR,void* ValuePtr
  1300.         returns the SRR1 of the task at the ti_Data ValuePtr address
  1301.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1302.         SRR1 is the MSR
  1303.         The stability of the value depends on PPCTask`s state.
  1304.  
  1305.       o PPCTASKINFOTAG_CR
  1306.         returns the CR of the task as the function result.
  1307.         The stability of the value depends on PPCTask`s state.
  1308.  
  1309.       o PPCTASKINFOTAG_XER
  1310.         returns the CR of the task as the function result.
  1311.         The stability of the value depends on PPCTask`s state.
  1312.  
  1313.       o PPCTASKINFOTAG_LR,void* ValuePtr
  1314.         returns the LR of the task at the ti_Data ValuePtr address
  1315.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1316.         The stability of the value depends on PPCTask`s state.
  1317.  
  1318.       o PPCTASKINFOTAG_CTR,void* ValuePtr
  1319.         returns the CTR of the task at the ti_Data ValuePtr address
  1320.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1321.         The stability of the value depends on PPCTask`s state.
  1322.  
  1323.       o PPCTASKINFOTAG_FPSCR,void* ValuePtr
  1324.         returns the FPSCR of the task at the ti_Data ValuePtr address
  1325.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1326.         The stability of the value depends on PPCTask`s state.
  1327.  
  1328.       o PPCTASKINFOTAG_GPR,RegNum
  1329.         returns the GPR[RegNum] of the task at the ValuePtr address.
  1330.         The stability of the value depends on PPCTask`s state.
  1331.  
  1332.       o PPCTASKINFOTAG_FPR,RegNum
  1333.         returns the GPR[RegNum] of the task at the ValuePtr address.
  1334.         The stability of the value depends on PPCTask`s state.
  1335.  
  1336.       o PPCTASKINFOTAG_WAITFINISHTASK (V45)
  1337.         returns the parent process in which you created
  1338.         a synchron PPC Task. Synchron PPC Task`s are created
  1339.         with the PPCTASKTAG_WAITINFISH,TRUE or outdated a
  1340.         PPCRunObject.
  1341.         The reason for this function is to find the shell
  1342.         task easily and check for a CTRL-C for example.
  1343.  
  1344.     RESULT
  1345.     result    - depends on the requested Tags
  1346.  
  1347.     SEE ALSO
  1348.     PPCSetTaskAttrs,PowerUP/PPCLib/ppc_tasks.h
  1349.  
  1350. ppc.library/PPCLoadObject                           ppc.library/PPCLoadObject
  1351.  
  1352.     NAME
  1353.     PPCLoadObject -- Load ELF PPC File
  1354.  
  1355.     SYNOPSIS
  1356.     ElfObject = PPCLoadObject(Name)
  1357.     d0              a0
  1358.  
  1359.     void *PPCLoadObject(char*);
  1360.  
  1361.     FUNCTION
  1362.     Loads an ELF PPC binary which is created by gcc for
  1363.     example. It can only handle relocatable ELF binaries
  1364.     (ld -r option)
  1365.  
  1366.     INPUTS
  1367.     name     - filename
  1368.  
  1369.     RESULT
  1370.     object    - ELF Program object which can be started by
  1371.               PPCRunObject
  1372.  
  1373.     NOTE
  1374.     ELF will be the only format allowed the PowerUP. We don't
  1375.     want alien formats.
  1376.  
  1377.     SEE ALSO
  1378.     PPCUnloadObject(), PPCRunObject(), ppclib/object.h
  1379.  
  1380. ppc.library/PPCLoadObjectTagList             ppc.library/PPCLoadObjectTagList
  1381.  
  1382.     NAME
  1383.     PPCLoadObjectTagList -- Create a PPC Object from an ELF Stream (V45)
  1384.     PPCLoadObjectTags -- Varargs Stub for PPCLoadObjectTagList
  1385.  
  1386.     SYNOPSIS
  1387.     ElfObject = PPCLoadObjectTagList(Tags )
  1388.     D0                             A0
  1389.  
  1390.     void *PPCLoadObjectTagList(struct TagItem*);
  1391.     void *PPCLoadObjectTags(...);
  1392.  
  1393.     FUNCTION
  1394.     Creates an PPC Object from an  ELF PPC binary which is created by gcc
  1395.         for example. It can only handle relocatable ELF binaries
  1396.     (ld -r option). This call is similar to PPCLoadObject but allows to
  1397.         create objects from ELF files that are already resident in memory.
  1398.  
  1399.     INPUTS
  1400.     tags     - The Tags you want.
  1401.       o PPCELFLOADTAG_ELFNAME
  1402.         pointer to a filename of the elf file or the name of the stram.
  1403.       o PPCELFLOADTAG_ELFADDRESS
  1404.         pointer to the elf stream resident in memory.
  1405.         PPCELFLOBJTAG_ELFNAME is the object name then.
  1406.       o PPCELFLOADTAG_ELFLENGTH
  1407.         length of the elf stream. This tag is optional
  1408.       o PPCELFLOADTAG_HOOK
  1409.         Stream IO hook which can be used to replace the open,read,seek
  1410.         stream functions.
  1411.         APTR CallHookPkt(hook,StreamHandle,ElfStreamMsg);
  1412.         The result of this function must be Type depended.
  1413.         Please read ppclib/object.h for more informations.
  1414.  
  1415.     RESULT
  1416.     object    - ELF Program object which can be started by
  1417.               PPCRunObject
  1418.  
  1419.     NOTES
  1420.     ELF will be the only format allowed the PowerUP. We don't
  1421.     want alien formats.
  1422.     PPCLOBJTAG_ELFNAME and PPCLOBJTAG_ELFADDRESS are mutually exclusive.
  1423.  
  1424.     SEE ALSO
  1425.     PPCUnloadObject(), PPCLoadObjectPPCRunObject(), ppc_protos.h, ppc_pragmas.h
  1426.  
  1427. ppc.library/PPCObtainPort                           ppc.library/PPCObtainPort
  1428.  
  1429.     NAME
  1430.     PPCObtainPort -- Obtain a PPC Message Port
  1431.  
  1432.     SYNOPSIS
  1433.     Port  PPCObtainPort(Tags)
  1434.                     A0
  1435.  
  1436.     void* PPCObtainPort(struct TagItem*);
  1437.  
  1438.     FUNCTION
  1439.     searches a public PPC MsgPort on the local processor or
  1440.     all processor. A search on the network may also be possible
  1441.     in the future.
  1442.  
  1443.     INPUTS
  1444.     Tags        - Tags to specify a public port for example.
  1445.  
  1446.     BUGS
  1447.     Probably a lot
  1448.  
  1449.     SEE ALSO
  1450.     PPCReleasePort
  1451.  
  1452. ppc.library/PPCReadByte                               ppc.library/PPCReadByte
  1453.  
  1454.    NAME
  1455.     PPCReadByte -- Read a Long from the PPC
  1456.  
  1457.    SYNOPSIS
  1458.     Result=PPCReadByte(Address)
  1459.     d0                 a0
  1460.  
  1461.     ULONG    PPCReadByte(UBYTE*);
  1462.  
  1463.    FUNCTION
  1464.     This function reads a long by the PPC processor.
  1465.     Quick way to read small amounts of data without cache effects
  1466.  
  1467.    RESULT
  1468.     Result - UBYTE read from the address
  1469.  
  1470.    SEE ALSO
  1471.     PPCWriteByte()
  1472.  
  1473. ppc.library/PPCReadLong                               ppc.library/PPCReadLong
  1474.  
  1475.    NAME
  1476.     PPCReadLong -- Read a Long from the PPC
  1477.  
  1478.    SYNOPSIS
  1479.     Result=PPCReadLong(Address)
  1480.        d0                 a0    
  1481.  
  1482.     ULONG    PPCReadLong(ULONG*);
  1483.  
  1484.    FUNCTION
  1485.     This function reads a long by the PPC processor.
  1486.     Quick way to read small amounts of data without cache effects
  1487.  
  1488.    RESULT
  1489.     Result - ULONG read from the address
  1490.  
  1491.    SEE ALSO
  1492.     PPCWriteLong()
  1493.  
  1494. ppc.library/PPCReadWord                               ppc.library/PPCReadWord
  1495.  
  1496.    NAME
  1497.     PPCReadWord -- Read a Long from the PPC
  1498.  
  1499.    SYNOPSIS
  1500.     Result=PPCReadWord(Address)
  1501.     d0                 a0
  1502.  
  1503.     ULONG    PPCReadWord(ULONG*);
  1504.  
  1505.    FUNCTION
  1506.     This function reads a long by the PPC processor.
  1507.     Quick way to read small amounts of data without cache effects
  1508.  
  1509.    RESULT
  1510.     Result - UWORD read from the address
  1511.  
  1512.    SEE ALSO
  1513.     PPCWriteWord()
  1514.  
  1515. ppc.library/PPCReleasePort                         ppc.library/PPCReleasePort
  1516.  
  1517.     NAME
  1518.     PPCReleasePort -- Releases an obtained PPC Message Port
  1519.  
  1520.     SYNOPSIS
  1521.     Success=PPCReleasePort(PPCPort)
  1522.                            A0
  1523.  
  1524.     void PPCReleasePort(void*);
  1525.  
  1526.     FUNCTION
  1527.     Releases a PPC MsgPort, so it may be removed after nobody
  1528.     needs it anymore.
  1529.  
  1530.     INPUTS
  1531.     PPCPort    - Ptr to an object generated by PPCCreatePort
  1532.  
  1533.     BUGS
  1534.     Probably a lot
  1535.  
  1536.     SEE ALSO
  1537.     PPCObtainPort
  1538.  
  1539. ppc.library/PPCRemPortList                         ppc.library/PPCRemPortList
  1540.  
  1541.    NAME
  1542.     PPCRemPortList -- Remove a port from the PPCPortList object
  1543.  
  1544.    SYNOPSIS
  1545.     PPCRemPortList(PPCPortList,PPCPort)
  1546.                        A0          A1
  1547.  
  1548.     void PPCRemPortList(void*,void*);
  1549.  
  1550.    FUNCTION
  1551.     This function removes a PPCPort from your PPCPortList object.
  1552.  
  1553.    INPUT
  1554.     PPCPortList - a pointer to the PPCPortList object
  1555.     PPCPort     - a pointer to the PPC Message port
  1556.  
  1557.    SEE ALSO
  1558.     PPCCreatePortList(), ppclib/message.h
  1559.  
  1560. ppc.library/PPCReplyMessage                       ppc.library/PPCReplyMessage
  1561.  
  1562.     NAME
  1563.     PPCReplyMessage -- Reply a PPC Message
  1564.  
  1565.     SYNOPSIS
  1566.     Success=PPCReplyMessage(PPCMessage)
  1567.                             A0
  1568.  
  1569.     BOOL PPCReplyMessage(void*);
  1570.  
  1571.     FUNCTION
  1572.     Reply a PPC Message. After this operation the Data Ptr
  1573.     embedded in the PPC Message isn`t valid anymore.
  1574.  
  1575.     INPUTS
  1576.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1577.  
  1578.     BUGS
  1579.     Probably a lot
  1580.  
  1581.     SEE ALSO
  1582.     PPCGetMessage
  1583.  
  1584. ppc.library/PPCRunObject                             ppc.library/PPCRunObject
  1585.  
  1586.     NAME
  1587.     PPCRunObject -- Runs an ELF PPC File
  1588.  
  1589.     SYNOPSIS
  1590.     ElfObject = PPCRunObject(ElfObject, Argument )
  1591.     D0                 A0         A1
  1592.  
  1593.     void *PPCRunObject(void*,void*);
  1594.  
  1595.     FUNCTION
  1596.     Runs an ELF PPC Object and returns the result.
  1597.  
  1598.     INPUTS
  1599.     object     - ptr to the object given by PPCLoadObject
  1600.  
  1601.     RESULT
  1602.     result    - the ElfObject of the loaded PPC program.
  1603.  
  1604.     NOTES
  1605.     ELF will be the only format allowed for PowerUP.
  1606.     We don't want alien formats.
  1607.     If you think you can hack the format of the ElfObject be
  1608.     sure that we'll change the format.
  1609.     THIS FUNCTION IS OBSOLETE AND IT'S ONLY THERE TO BE COMPATIBLE
  1610.     WITH THE FIRST SINGLE TASK ppc.library.
  1611.     Use PPCCreateTask instead.
  1612.  
  1613.     SEE ALSO
  1614.     PPCUnloadObject,PPCRunObject,PowerUP/ppclib/Tasks.h
  1615.  
  1616. ppc.library/PPCSendMessage                         ppc.library/PPCSendMessage
  1617.  
  1618.     NAME
  1619.     PPCSendMessage -- Sends a PPC Message to a PPC Port
  1620.  
  1621.     SYNOPSIS
  1622.     PPCSendMessage(PPCPort,PPCMessage,Data,Length,MsgID)
  1623.                    A0      A1         A2   D0     D1
  1624.  
  1625.     Success=PPCSendMessage(void*,void*,void*,ULONG,ULONG);
  1626.  
  1627.     FUNCTION
  1628.     Sends a PPC Message to a PPC Port which may be controlled
  1629.     by the M68k oder PPC. This way you can pass data between
  1630.     the PPC and the M68k in an abstract way which will be source
  1631.     compatible on the A\BOX OS. After you`ve sent a message
  1632.     you MUST NOT change the Data until your task received a reply.
  1633.     If you only want to send a quick 32Bit Msg to the target task
  1634.     use Data as a 32bit Msg value and Length=0.
  1635.     This way no Cache is flushed.
  1636.  
  1637.     INPUTS
  1638.     PPCPort    - Ptr to an object generated by PPCCreatePort
  1639.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1640.     Data       - Ptr to the Data you wanna send
  1641.     Length     - Length of the Data you wanna send.
  1642.     MsgID      - MsgID code you may use for your msg type detection
  1643.  
  1644.     BUGS
  1645.     Probably a lot
  1646.  
  1647.     SEE ALSO
  1648.     PPCReplyMessage
  1649.  
  1650. ppc.library/PPCSetAttrs                               ppc.library/PPCSetAttrs
  1651.  
  1652.     NAME
  1653.     PPCSetAttrs -- Set PPC Attrs                      (V45)
  1654.     PPCSetAttrsTags -- Varargs Stub for PPCSetAttrs()
  1655.  
  1656.     SYNOPSIS
  1657.     Success = PPCSetAttrs(Tags)
  1658.     D0                    A0
  1659.  
  1660.     BOOL PPCSetAttrs(struct TagItem*);
  1661.     BOOL PPCSetAttrsTags(...);
  1662.  
  1663.     FUNCTION
  1664.     Sets certain flags for the PPC enviroment.
  1665.  
  1666.     INPUTS
  1667.     Tags - The tags you want infos about.
  1668.  
  1669.     o PPCINFOTAG_EXCEPTIONHOOK
  1670.       sets the global exception Hook.
  1671.       Check out the include "/ppclib/ppc.h and "ppclib/tasks.h"
  1672.       for more informations.
  1673.  
  1674.     o PPCINFOTAG_TASKHOOK
  1675.       adds a hook to the task hook event list.
  1676.       This hook is called if a task is created, deleted or changed
  1677.       in some way. This way you could add support to the debugger to
  1678.       catch the next created ppc task.
  1679.       Check out the include "/ppclib/ppc.h and "ppclib/tasks.h"
  1680.       for more informations.
  1681.  
  1682.     o PPCINFOTAG_TASKHOOK
  1683.       removes a task hook.
  1684.  
  1685.     RESULT
  1686.     success    - If the operation was successful
  1687.  
  1688.     SEE ALSO
  1689.     PPCGetAttrs(), ppclib/ppc.h
  1690.  
  1691. ppc.library/PPCFreeVecPooled                     ppc.library/PPCFreeVecPooled
  1692.  
  1693.    NAME
  1694.     PPCFreeVecPooled -- return PPCAllocVecPooled() memory to the system
  1695.  
  1696.    SYNOPSIS
  1697.     PPCFreeVecPooled(Pool,memoryBlock)
  1698.                      A0   A1
  1699.  
  1700.     void PPCFreeVecPooled(void*,void *);
  1701.  
  1702.    FUNCTION
  1703.     Free an allocation made by the PPCAllocVecPooled() call.  The memory will
  1704.     be returned to the system pool from which it came.
  1705.  
  1706.    INPUTS
  1707.     memoryBlock - pointer to the memory block to free, or NULL.
  1708.  
  1709.    SEE ALSO
  1710.     PPCAllocVecPooled()
  1711.  
  1712. ppc.library/PPCAllocVecPooled                   ppc.library/PPCAllocVecPooled
  1713.  
  1714.    NAME
  1715.     PPCAllocVecPooled -- allocate Pool memory and keep track of the size
  1716.  
  1717.    SYNOPSIS
  1718.     memoryBlock = PPCAllocVecPooled(Pool,byteSize)
  1719.     D0                              A0   D0
  1720.  
  1721.     void *PPCAllocVec(void*, ULONG);
  1722.  
  1723.    FUNCTION
  1724.     This function works identically to PPCAllocPooled(), but tracks
  1725.     the size of the allocation.
  1726.  
  1727.     See the PPCAllocPooled() documentation for details.
  1728.  
  1729.    SEE ALSO
  1730.     PPCFreeVecPooled()
  1731.  
  1732. ppc.library/PPCCreateMessage                     ppc.library/PPCCreateMessage
  1733.  
  1734.     NAME
  1735.     PPCCreateMessage -- Create a Message for a PPCMsgPort
  1736.  
  1737.     SYNOPSIS
  1738.     Message = PPCCreateMessage(PPCPort,Length)
  1739.     D0                         A0      D0
  1740.  
  1741.     void* PPCCreateMessage(void*,ULONG);
  1742.  
  1743.     FUNCTION
  1744.     Creates a Message for PPCPort communication.
  1745.        The Length parameter may be useful in the future to optimize
  1746.     messages in certain addressspace mappings for IPC in a MP system.
  1747.     It isn`t necessary to specify a Length which is > max(DataSize)
  1748.     but it may result in a performance win in the future.
  1749.     A message and msgdata can`t be reused or touched after a SendMessage
  1750.     until the message was replied.
  1751.  
  1752.     INPUTS
  1753.     PPCPort    - Ptr to an object generated by PPCCreatePort
  1754.     Length  - Max Length for Messages
  1755.  
  1756.     RESULT
  1757.     PPCMessage - PPCMessage Object ptr.
  1758.  
  1759.     SEE ALSO
  1760.     PPCDeleteMessage(), ppclib/message.h
  1761.  
  1762. ppc.library/PPCCreatePort                           ppc.library/PPCCreatePort
  1763.  
  1764.     NAME
  1765.     PPCCreatePort -- Create a PPC Message Port
  1766.  
  1767.     SYNOPSIS
  1768.     Port = PPCCreatePort(Tags)
  1769.     D0                   A0
  1770.  
  1771.     void* PPCCreatePort(struct TagItem*);
  1772.  
  1773.     FUNCTION
  1774.     Creates a local PPC MsgPort to receive messages from the PPC.
  1775.        With a specified name you can mark it public to the ppc.library.
  1776.        This shouldn`t be missunderstood as a public system port because
  1777.     PPCPorts and Amigaports are different entities.
  1778.  
  1779.     INPUTS
  1780.     Tags        - Tags to specify a public port for example.
  1781.  
  1782.       o PPCPORTTAG_NAME,"Name"
  1783.         defines the name of a public PPC port.
  1784.  
  1785.       o PPCPORTTAG_ERROR,(ULONG*) ErrorPtr
  1786.         defines the ptr for a more precise return error result
  1787.  
  1788.     RESULT
  1789.     Port - the PPCPort object or NULL
  1790.  
  1791.     SEE ALSO
  1792.     PPCDeletePort(), ppclib/message.h
  1793.  
  1794. ppc.library/PPCDeleteMessage                     ppc.library/PPCDeleteMessage
  1795.  
  1796.     NAME
  1797.     PPCDeleteMessage -- Delete a PPC Message
  1798.  
  1799.     SYNOPSIS
  1800.     PPCDeleteMessage(PPCMessage)
  1801.                      A0
  1802.  
  1803.     void PPCDeleteMessage(void*);
  1804.  
  1805.     FUNCTION
  1806.     Deletes a PPC Message. You can only delete a msg your
  1807.     task allocated and which hasn`t yet been replied.
  1808.  
  1809.     INPUTS
  1810.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1811.  
  1812.     SEE ALSO
  1813.     PPCCreatePort(), ppclib/message.h
  1814.  
  1815. ppc.library/PPCDeletePort                           ppc.library/PPCDeletePort
  1816.  
  1817.     NAME
  1818.     PPCDeletePort -- Delete a PPC Message Port
  1819.  
  1820.     SYNOPSIS
  1821.     Success = PPCDeletePort(PPCPort)
  1822.     D0                      A0
  1823.  
  1824.     BOOL PPCDeletePort(void*);
  1825.  
  1826.     FUNCTION
  1827.     Deletes a local PPC MsgPort when the Port isn`t obtained
  1828.     by somebody else. If it`s obtained it returns FALSE so
  1829.     you have to decide yourself how you wanna recover this
  1830.     problem which maybe caused by a synchronizing problem
  1831.     between your M68k and PPC applications
  1832.  
  1833.     INPUTS
  1834.     PPCPort    - PPCPort object generated by PPCCreatePort
  1835.  
  1836.     SEE ALSO
  1837.     PPCCreatePort(), ppclib/message.h
  1838.  
  1839. ppc.library/PPCGetMessageAttr                   ppc.library/PPCGetMessageAttr
  1840.  
  1841.     NAME
  1842.     PPCGetMessageAttr -- Get Infos about a PPC Message
  1843.  
  1844.     SYNOPSIS
  1845.     Result = PPCGetMessageAttr(PPCMessage,Attr)
  1846.     D0                         A0         D0
  1847.  
  1848.     ULONG PPCGetMessageAttr(void*,ULONG);
  1849.  
  1850.     FUNCTION
  1851.     Returns informations about a PPC Message. This way you
  1852.     can get a Ptr to the Data the message transports and
  1853.     the length of the message.
  1854.  
  1855.     INPUTS
  1856.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1857.     Attr       - Information Attribute
  1858.       o PPCMSGTAG_DATA
  1859.         returns the Data parameter of the PPC Message.
  1860.         The Data field is most of a time a memory ptr
  1861.         but if the length of the message is 0 it can
  1862.         also be used as an additional msgid.
  1863.       o PPCMSGTAG_DATALENGTH
  1864.         returns the Length of the PPC Message. If the
  1865.         Length is NULL this Message needed no cacheflush
  1866.         and therefore is very fast. If Length is NULL the
  1867.         the Data field can be used as an additional msgid.
  1868.       o PPCMSGTAG_MSGID
  1869.         returns the MSGID of the PPC Message. This may be
  1870.         useful to mark certain msgs to be from a certain
  1871.         type which may simplify the handling of messages.
  1872.  
  1873.     RESULT
  1874.     Result - Returns the informations you requested by the attribute.
  1875.  
  1876.     SEE ALSO
  1877.     PPCGetMessage(), ppclib/message.h
  1878.  
  1879. ppc.library/PPCObtainPort                           ppc.library/PPCObtainPort
  1880.  
  1881.     NAME
  1882.     PPCObtainPort -- Obtain a PPC Message Port
  1883.  
  1884.     SYNOPSIS
  1885.     Port =  PPCObtainPort(Tags)
  1886.     D0                    A0
  1887.  
  1888.     void* PPCObtainPort(struct TagItem*);
  1889.  
  1890.     FUNCTION
  1891.     searches a public PPC MsgPort on the local processor or
  1892.     all processor. A search on the network may also be possible
  1893.     in the future.
  1894.  
  1895.     INPUTS
  1896.     Tags        - Tags to specify a public port for example.
  1897.       o PPCPORTTAG_NAME,"Name"
  1898.         defines the name of the PPC port you want to obtain
  1899.  
  1900.       o PPCPORTTAG_ERROR,(ULONG*) ErrorPtr
  1901.         defines the ptr for a more precise return error result
  1902.  
  1903.     RESULT
  1904.     PPCPort    - PPCPort object generated by PPCCreatePort
  1905.  
  1906.     SEE ALSO
  1907.     PPCReleasePort(), ppclib/message.h
  1908.  
  1909. ppc.library/PPCReleasePort                         ppc.library/PPCReleasePort
  1910.  
  1911.     NAME
  1912.     PPCReleasePort -- Releases an obtained PPC Message Port
  1913.  
  1914.     SYNOPSIS
  1915.     Success = PPCReleasePort(PPCPort)
  1916.     D0                       A0
  1917.  
  1918.     void PPCReleasePort(void*);
  1919.  
  1920.     FUNCTION
  1921.     Releases a PPC MsgPort, so it may be removed after nobody
  1922.     needs it anymore.
  1923.  
  1924.     INPUTS
  1925.     PPCPort    - Ptr to an object generated by PPCCreatePort
  1926.  
  1927.     RESULT
  1928.     Success - Boolean which says if the PPCPort could be released
  1929.               successfully. If this fails the PPCPort is still obtained
  1930.               by somebody else.
  1931.     SEE ALSO
  1932.     PPCObtainPort(), ppclib/message.h
  1933.  
  1934. ppc.library/PPCReplyMessage                       ppc.library/PPCReplyMessage
  1935.  
  1936.     NAME
  1937.     PPCReplyMessage -- Reply a PPC Message
  1938.  
  1939.     SYNOPSIS
  1940.     Success = PPCReplyMessage(PPCMessage)
  1941.     D0                        A0
  1942.  
  1943.     BOOL PPCReplyMessage(void*);
  1944.  
  1945.     FUNCTION
  1946.     Reply a PPC Message. After this operation the embedded
  1947.     Data informations in the PPC Message isn`t valid anymore.
  1948.     The Message itself is also not valid anymore so any access
  1949.     to the object is not allowed.
  1950.  
  1951.     INPUTS
  1952.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1953.  
  1954.     RESULT
  1955.     Success - A Boolean tells you if the operation was successful.
  1956.  
  1957.     SEE ALSO
  1958.     PPCGetMessage(), ppclib/message.h
  1959.  
  1960. ppc.library/PPCSendMessage                         ppc.library/PPCSendMessage
  1961.  
  1962.     NAME
  1963.     PPCSendMessage -- Sends a PPC Message to a PPC Port
  1964.  
  1965.     SYNOPSIS
  1966.     Success = PPCSendMessage(PPCPort,PPCMessage,Data,Length,MsgID)
  1967.     D0                       A0      A1         A2   D0     D1
  1968.  
  1969.     BOOL PPCSendMessage(void*,void*,void*,ULONG,ULONG);
  1970.  
  1971.     FUNCTION
  1972.     Sends a PPC Message to a PPC Port which may be controlled
  1973.     by the M68k oder PPC. This way you can pass data between
  1974.     the PPC and the M68k in an abstract way which will be source
  1975.     compatible on the A\BOX OS. After you`ve sent a message
  1976.     you MUST NOT change the Data until your task received a reply.
  1977.     If you only want to send a quick 32Bit Msg to the target task
  1978.     use Data as a 32bit Msg value and Length=0.
  1979.     This way no Cache is flushed.
  1980.  
  1981.     INPUTS
  1982.     PPCPort    - Ptr to an object generated by PPCCreatePort
  1983.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1984.     Data       - Ptr to the Data you wanna send or additional MsgID
  1985.                  if the Length field is 0.
  1986.     Length     - Length of the Data you wanna send.
  1987.     MsgID      - MsgID code you may use for your msg type detection
  1988.  
  1989.     RESULT
  1990.     Success - A Boolean tells you if the operation was successful.
  1991.  
  1992.     SEE ALSO
  1993.     PPCReplyMessage(), ppclib/message.h
  1994.  
  1995. ppc.library/PPCSetPortListAttr                 ppc.library/PPCSetPortListAttr
  1996.  
  1997.     NAME
  1998.     PPCSetPortListAttr -- Set Infos about a PPC PortList
  1999.  
  2000.     SYNOPSIS
  2001.     PPCSetPortListAttr(PPCPortList,Attr)
  2002.                        A0          D0
  2003.  
  2004.     void PPCSetPortListAttr(void*,ULONG);
  2005.  
  2006.     FUNCTION
  2007.     changes certain PPC PortList attributes. This way you
  2008.     can change the Extended SignalMask for example.
  2009.  
  2010.     INPUTS
  2011.     PPCPortList - Ptr to a PPCPortList object
  2012.     Attr        - Information Attribute
  2013.       o PPCPORTLISTTAG_EXTENDEDSIGNALS,ExtSignalMask
  2014.         changes the PPCPortList extended signalmask to the value you specify
  2015.  
  2016.     SEE ALSO
  2017.     PPCCreatePortList(), PPCPortList(), PPCGetSetPortListAttr(),
  2018.     ppclib/message.h
  2019.  
  2020. ppc.library/PPCSetTaskAttrs                       ppc.library/PPCSetTaskAttrs
  2021.  
  2022.     NAME
  2023.     PPCSetTaskAttrs -- Set PPC Task Info
  2024.     PPCSetTaskAttrsTags -- Varargs Stub for PPCSetTaskAttrs()
  2025.  
  2026.     SYNOPSIS
  2027.     Boolean PPCSetTaskAttrs(TaskObject, Tags )
  2028.     D0                      A0         A1
  2029.  
  2030.     ULONG PPCSetTaskAttrs(void*,struct TagItem*);
  2031.     ULONG PPCSetTaskAttrsStub(void*,...);
  2032.  
  2033.     FUNCTION
  2034.     Gives you the ability to change certain task informations.
  2035.     
  2036.     INPUTS
  2037.     TaskObject - The Task you want infos about or NULL if you mean ALL
  2038.     Tags       - The Tags you want.
  2039.       o PPCTASKINFOTAG_PRIORITY,Priority
  2040.         changes the priority of the TaskObject
  2041.  
  2042.       o PPCTASKINFOTAG_CACHEFLUSH,BOOLEAN
  2043.         changes the cacheflush flag of the TaskObject.
  2044.         see PPCTASKTAG_CACHEFLUSH for more informations
  2045.  
  2046.       o PPCTASKINFOTAG_INPUTHANDLE,BPTR
  2047.         changes the inputhandle file of the M68k MsgTask
  2048.  
  2049.       o PPCTASKINFOTAG_OUTPUTHANDLE,BPTR
  2050.         changes the outputhandle file of the M68k MsgTask
  2051.  
  2052.       o PPCTASKINFOTAG_ERRORHANDLE,BPTR
  2053.         changes the errorhandle file of the M68k MsgTask
  2054.  
  2055.       o PPCTASKINFOTAG_VALUEPTR,(void*)
  2056.         specifies the address to read the register values
  2057.         from which may not fit into 32bit.
  2058.  
  2059.       o PPCTASKINFOTAG_EXCEPTIONHOOK,(struct Hook*)
  2060.         installs a new ExceptionHandler Hook.
  2061.         Useful in the combination with a CreateTaskHook
  2062.         function.
  2063.  
  2064.       o PPCTASKINFOTAG_STOPTASK, BOOL
  2065.         tells the Task that it must stop at the first
  2066.         instruction. This must only be called during
  2067.         a CreateTaskHook function and it makes only
  2068.         sense in the combination with an own trap handler.
  2069.  
  2070.       o PPCTASKINFOTAG_PC,void* ValuePtr
  2071.         changes the SRR0 of the task with the contents
  2072.         from the the ValuePtr address. If you`ve not
  2073.         specifed a ti_Data ValuePtr the valueptr from
  2074.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  2075.         SRR0 is the program counter.
  2076.         The stability of the value depends on PPCTask`s
  2077.         state.
  2078.  
  2079.       o PPCTASKINFOTAG_MSR,void* ValuePtr
  2080.         changes the SRR1 of the task with the contents
  2081.         from the the ValuePtr address.
  2082.         If you`ve not specifed a ti_Data ValuePtr the
  2083.         valueptr from PPCTASKINFOTAG_VALUEPTR is used
  2084.         if it exists. SRR1 is the MSR.
  2085.  
  2086.       o PPCTASKINFOTAG_CR,ULONG
  2087.         changes the CR register contents of the task.
  2088.         The stability of the value depends on PPCTask`s
  2089.         state.
  2090.  
  2091.       o PPCTASKINFOTAG_XER,ULONG
  2092.         changes the XER register contents of the task.
  2093.         The stability of the value depends on PPCTask`s
  2094.         state.
  2095.  
  2096.       o PPCTASKINFOTAG_LR,void* ValuePtr
  2097.         changes the LR of the task with the contents from
  2098.         the the ValuePtr address. If you`ve not specifed
  2099.         a ti_Data ValuePtr the valueptr from
  2100.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  2101.         The stability of the value depends on PPCTask`s
  2102.         state.
  2103.  
  2104.       o PPCTASKINFOTAG_CTR,void* ValuePtr
  2105.         changes the CTR of the task with the contents from
  2106.         the the ValuePtr address. If you`ve not specifed a
  2107.         ti_Data ValuePtr the valueptr from
  2108.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  2109.         The stability of the value depends on PPCTask`s
  2110.         state.
  2111.  
  2112.       o PPCTASKINFOTAG_FPSCR
  2113.         changes the FPSCR of the task with the contents from
  2114.         the the ValuePtr address. If you`ve not specifed a
  2115.         ti_Data ValuePtr the valueptr from
  2116.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  2117.         The stability of the value depends on PPCTask`s
  2118.         state.
  2119.  
  2120.       o PPCTASKINFOTAG_GPR,RegNum
  2121.         changes the GPR[RegNum] of the task with the contents
  2122.         from the the ValuePtr address which you must specify
  2123.         with PPCTASKINFOTAG_VALUEPTR.
  2124.         The stability of the value depends on PPCTask`s
  2125.         state.
  2126.  
  2127.       o PPCTASKINFOTAG_FPR,RegNum
  2128.         changes the FPR[RegNum] of the task with the contents
  2129.         from the the ValuePtr address which you must specify
  2130.         with PPCTASKINFOTAG_VALUEPTR.
  2131.         The stability of the value depends on PPCTask`s
  2132.         state.
  2133.     RESULT
  2134.     Boolean - to signal an error
  2135.  
  2136.     SEE ALSO
  2137.     PPCGetTaskAttrs,PPCDeleteTaskInfo,PowerUP/PPCLib/ppc_tasks.h
  2138.  
  2139. ppc.library/PPCSignalTask                           ppc.library/PPCSignalTask
  2140.  
  2141.     NAME
  2142.     PPCSignalTask -- Signal PPC Task
  2143.  
  2144.     SYNOPSIS
  2145.     PPCSignalTask(TaskObject,SignalMask)
  2146.             A0       D0
  2147.  
  2148.     void PPCSignalTask(void*,ULONG);
  2149.  
  2150.     FUNCTION
  2151.     Sends Signals to a PPC Task.
  2152.  
  2153.     INPUTS
  2154.     TaskObject     - TaskObject returned by PPCCreateTask
  2155.     signalmask    - SignalMask as known from exec/Signal
  2156.  
  2157.     SEE ALSO
  2158.     PPCCreateTask,PowerUP/ppclib/Tasks.h
  2159.  
  2160. ppc.library/PPCStartTask                             ppc.library/PPCStartTask
  2161.  
  2162.    NAME
  2163.     PPCStartTask -- Restart a Task
  2164.  
  2165.    SYNOPSIS
  2166.     Result    PPCStartTask(TaskObject,Tags)
  2167.                          A0         A1
  2168.  
  2169.     BOOL    PPCStartTask(void*,struct TagItem*);
  2170.  
  2171.    FUNCTION
  2172.     This is a function only useful for debuggers. It allows a Debugger
  2173.     to restart a PPCTask again after it was stopped.
  2174.     Being stopped means PPCStopTask() or after an Exception where a
  2175.     Task goes into the stop state.
  2176.  
  2177.     INPUTS
  2178.     TaskObject - The Task you want infos about or NULL if you mean ALL
  2179.     Tags       - The Tags you want.
  2180.  
  2181.    RESULT
  2182.     Result - Boolean to show if the function was successful
  2183.  
  2184.    SEE ALSO
  2185.     PPCStopTask(),ppclib/tasks.h
  2186.  
  2187. ppc.library/PPCStopTask                               ppc.library/PPCStopTask
  2188.  
  2189.    NAME
  2190.     PPCStopTask -- Stop a Task
  2191.  
  2192.    SYNOPSIS
  2193.     Result    PPCStopTask(TaskObject,Tags)
  2194.                         A0          A1
  2195.     
  2196.  
  2197.     BOOL    PPCStopTask(void*,struct TagItem*);
  2198.  
  2199.    FUNCTION
  2200.     This is a function only useful for debuggers. It allows a Debugger
  2201.     to stop a running Task.
  2202.  
  2203.     INPUTS
  2204.     TaskObject - The Task you want infos about or NULL if you mean ALL
  2205.     Tags       - The Tags you want.
  2206.  
  2207.    RESULT
  2208.     Result - Boolean to show if the function was successful
  2209.  
  2210.    SEE ALSO
  2211.     PPCStartTask(),ppclib/tasks.h
  2212.  
  2213. ppc.library/PPCUnLoadObject                       ppc.library/PPCUnLoadObject
  2214.  
  2215.     NAME
  2216.     PPCUnLoadObject -- UnLoad ELF PPC Object
  2217.  
  2218.     SYNOPSIS
  2219.     PPCUnLoadObject( Object )
  2220.             A0
  2221.  
  2222.     PPCUnLoadObject(void*);
  2223.  
  2224.     FUNCTION
  2225.     Unloads an Object created with PPCLoadObject.
  2226.  
  2227.     INPUTS
  2228.     object     - ptr to the object given by PPCLoadObject
  2229.  
  2230.     SEE ALSO
  2231.     PPCUnloadObject(), PPCRunObject(), ppclib/object.h
  2232.  
  2233. ppc.library/PPCWaitPort                               ppc.library/PPCWaitPort
  2234.  
  2235.    NAME
  2236.     PPCWaitPort -- wait for a given PPC Msgport to be non-empty
  2237.  
  2238.    SYNOPSIS
  2239.     PPCMessage = PPCWaitPort(PPCPort)
  2240.     D0                 A0
  2241.  
  2242.    FUNCTION
  2243.     This function waits for the given PPC Msgport to become non-empty.
  2244.     If necessary, the Wait function will be called to wait for
  2245.     the port signal.  If a message is already present at the
  2246.     port, this function will return immediately.  The return
  2247.     value is always a pointer to the first PPC Message queued (but
  2248.     it is not removed from the queue.
  2249.  
  2250.    INPUT
  2251.     PPCPort - a pointer to the PPC Message port
  2252.  
  2253.    RETURN
  2254.     PPCMessage - a pointer to the first available PPC Message
  2255.  
  2256.    SEE ALSO
  2257.     PPCGetMessage
  2258.  
  2259. ppc.library/PPCWaitPort                               ppc.library/PPCWaitPort
  2260.  
  2261.    NAME
  2262.     PPCWaitPort -- wait for a given PPC Msgport to be non-empty
  2263.  
  2264.    SYNOPSIS
  2265.     PPCMessage = PPCWaitPort(PPCPort)
  2266.     D0                 A0
  2267.  
  2268.     void*    PPCWaitPort(void*);
  2269.  
  2270.    FUNCTION
  2271.     This function waits for the given PPC Msgport to become non-empty.
  2272.     If necessary, the Wait function will be called to wait for
  2273.     the port signal.  If a message is already present at the
  2274.     port, this function will return immediately.  The return
  2275.     value is always a pointer to the first PPC Message queued (but
  2276.     it is not removed from the queue.
  2277.  
  2278.    INPUT
  2279.     PPCPort - a pointer to the PPC Message port
  2280.  
  2281.    RESULT
  2282.     PPCMessage - a pointer to the first PPC Message in the PPCPort msglist.
  2283.  
  2284.    SEE ALSO
  2285.     PPCGetMessage(), ppclib/message.h
  2286.  
  2287. ppc.library/PPCWaitPortList                       ppc.library/PPCWaitPortList
  2288.  
  2289.    NAME
  2290.     PPCWaitPortList -- wait for a given PPC Msgport List to get a msg
  2291.  
  2292.    SYNOPSIS
  2293.     PPCPort = PPCWaitPortList(PPCPortList)
  2294.     D0                      A0
  2295.  
  2296.     void* PPCWaitPortList(void*)
  2297.  
  2298.    FUNCTION
  2299.     This function waits for a list of PPCPorts. If a message
  2300.     is received by one of the ports the port with the msg is
  2301.     returned so you can use PPCGetMessage on that port.
  2302.     NULL is returned if no signals were received or if an extended
  2303.     signal was received. You should always check the Received
  2304.     Signals in PPCWaitPort when you use an extended Signalmask, so
  2305.     you don`t miss signals.
  2306.     It could happen that you get a message and some private signal
  2307.     and the function returns the PPCPort where the message is.
  2308.     In this case you should check the received signalmask to not
  2309.     miss your private signals.
  2310.  
  2311.    INPUT
  2312.     PPCPortList - a pointer to a PPCPortList object created by
  2313.                   PPCCreateWaitPortList()
  2314.  
  2315.    RESULT
  2316.     PPCPort - a pointer to a port which received a msg or NULL.
  2317.  
  2318.    SEE ALSO
  2319.     PPCGetMessage(), PPCWaitPort(), ppclib/message.h
  2320.  
  2321. ppc.library/PPCWriteByte                             ppc.library/PPCWriteByte
  2322.  
  2323.    NAME
  2324.     PPCWriteByte -- Write a Long by the PPC
  2325.  
  2326.    SYNOPSIS
  2327.     PPCWriteByte(Address,Value)
  2328.                  a0      d0
  2329.  
  2330.     void    PPCWriteByte(UBYTE*,ULONG);
  2331.  
  2332.    FUNCTION
  2333.     This function writes a long by the PPC processor.
  2334.     Quick way to write small amounts of data without cache effects
  2335.  
  2336.    SEE ALSO
  2337.     PPCReadByte()
  2338.  
  2339. ppc.library/PPCWriteLong                             ppc.library/PPCWriteLong
  2340.  
  2341.    NAME
  2342.     PPCWriteLong -- Write a Long by the PPC
  2343.  
  2344.    SYNOPSIS
  2345.     PPCWriteLong(Address,Value)
  2346.                  a0      d0
  2347.  
  2348.     void    PPCWriteLong(ULONG*,ULONG);
  2349.  
  2350.    FUNCTION
  2351.     This function writes a long by the PPC processor.
  2352.     Quick way to write small amounts of data without cache effects
  2353.  
  2354.    SEE ALSO
  2355.     PPCReadLong()
  2356.  
  2357. ppc.library/PPCWriteLongFlush                   ppc.library/PPCWriteLongFlush
  2358.  
  2359.    NAME
  2360.     PPCWriteLongFlush -- Write a Long by the PPC and Flush Cache
  2361.  
  2362.    SYNOPSIS
  2363.     PPCWriteLongFlush(Address,Value)
  2364.                       a0      d0
  2365.  
  2366.     void    PPCWriteLongFlush(ULONG*,ULONG);
  2367.  
  2368.    FUNCTION
  2369.     This function writes a long by the PPC processor and flushes
  2370.     the instruction cache. The only reason for this function is
  2371.     to write a breakpoint.
  2372.  
  2373.    SEE ALSO
  2374.     PPCWriteLong(),PowerUP/PPCCacheFlush
  2375.  
  2376. ppc.library/PPCWriteWord                             ppc.library/PPCWriteWord
  2377.  
  2378.    NAME
  2379.     PPCWriteWord -- Write a Long by the PPC
  2380.  
  2381.    SYNOPSIS
  2382.     PPCWriteWord(Address,Value)
  2383.                  a0      d0
  2384.  
  2385.     void    PPCWriteWord(UWORD*,ULONG);
  2386.  
  2387.    FUNCTION
  2388.     This function writes a long by the PPC processor.
  2389.     Quick way to write small amounts of data without cache effects
  2390.  
  2391.    SEE ALSO
  2392.     PPCReadWord()
  2393.  
  2394.